// 使用 document.getElementById DOM API 来替换 id 属性为 info 的 HTML 元素的文本。
const information = document.getElementById('info')
information.innerText = `渲染线程修改了<p id="info">标签，获取预加载暴露的对象：
Chrome (v${versions.chrome()}), Node.js (v${versions.node()}), Electron (v${versions.electron()})
aa= (v${versions.aa()})`

console.log('也可直接使用：aa='+ versions.aa())

const func = async () => {
    const response = await window.ipcRendererApi.ping()
    console.log('函数内返回：',response) // 打印 'pong'
}
func()
window.ipcRendererApi.ping().then(
  (response)=>console.log('直接返回-测试返回：'+response)
)

const test_func1 = async () => {
    const response = await window.versions.test_ping('我是渲染线程传的参数')
    console.log('测试返回：'+response) // 打印 'pong'
}
test_func1()

// 模式 1：渲染器进程到主进程（单向）
const setButton = document.getElementById('btn')
const titleInput = document.getElementById('title')
setButton.addEventListener('click', () => {
  const title = titleInput.value
  window.electronAPI.setTitle(title)
})

// 模式 2：渲染器进程到主进程（双向）
const btn2 = document.getElementById('btn2')
const filePathElement = document.getElementById('filePath')
btn2.addEventListener('click', async () => {
  const filePath = await window.electronAPI.openFile()
  filePathElement.innerText = filePath
})

// 模式 3：主进程到渲染器进程
const counter = document.getElementById('counter')
// 也可以直接在此处调用 ipcRenderer.on ，而不是通过 context bridge 暴露它。
// 但是，与通过 context bridge 暴露预加载 API 相比，此方法的灵活性有限，因为监听器无法直接与渲染器代码交互。
// window.addEventListener('DOMContentLoaded', () => {
//     const counter = document.getElementById('counter')
//     ipcRenderer.on('update-counter', (_event, value) => {
//       const oldValue = Number(counter.innerText)
//       const newValue = oldValue + value
//       counter.innerText = newValue
//     })
//   })
window.electronAPI.onUpdateCounter((value) => {
  const oldValue = Number(counter.innerText)
  const newValue = oldValue + value
  counter.innerText = newValue.toString()
  window.electronAPI.counterValue(newValue)
})


